Real-time personalized suggestions for communications between participants

ABSTRACT

Disclosed in some examples are methods, systems, machine-readable media, and devices which provide for real-time personalized suggestions for participants in a network-based communication service. The personalized suggestions may include options for taking actions, content suggestions, and smart replies. These suggestions may be based upon the current conversation and are delivered personally to each participant.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.15/435,637, filed on Feb. 17, 2017. The entire contents of which isherein incorporated by reference in its entirety.

BACKGROUND

Network-based communications services such as online chats offerreal-time transmission of communications (e.g., text, photos, videos,voice snippets) between two or more persons through the use ofnetwork-accessible computing devices. Other network-based communicationsinclude email, phone calls, and the like. Users enter messages into anetwork-based communication application (e.g., SKYPE® by MICROSOFT®) ontheir computing devices and the application sends the message to acomputing device of the network-based communications service. Thenetwork-based communications service then forwards the message to otherparticipants in the network-based communications session via theirinstance of a network-based communication application. The network-basedcommunications service manages details pertaining to message delivery,addressing, and other details.

SUMMARY

Some examples disclosed herein pertain to network-based communicationsbetween two or more persons. Some examples disclosed herein relate toreal-time (or near real-time) personalized suggestions as part of anetwork-based communication between two or more persons. For example, asystem may receive text of a network-based communication between firstand second users. The system may input the text to a plurality of intentmodels, each intent model testing the text for a different type ofcommunicative intent. The system may generate a set of personalizedsuggestions based upon the responses from the intent models and a userprofile of the first user. The set of suggestions may be ranked relativeto one another based upon a global model and a user model, the usermodel specific to the first user. A first and a second suggestion may beselected from the set of suggestions based upon the ranking, the firstand second suggestions being different suggestion types and sent to thefirst device for presentation to the first user. Other aspects of theinvention will be apparent on reading the following detailed descriptionof the invention and viewing the drawings that form a part thereof.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings, which are not necessarily drawn to scale, like numeralsmay describe similar components in different views. The drawingsillustrate generally, by way of example, but not by way of limitation,various embodiments discussed in the present document.

FIGS. 1-7 show diagrams of Graphical User Interfaces (GUI) produced by anetwork-based communications application of a network-basedcommunications service according to some examples of the presentdisclosure.

FIG. 8 shows a system diagram of the network-based communications systemwith personalized suggestions according to some examples of the presentdisclosure.

FIG. 9 shows a data flow of generating a suggestion according to someexamples of the present disclosure.

FIG. 10 shows a data flow of generating a suggestion according to someexamples of the present disclosure.

FIG. 11 shows a flowchart of a method of providing personalizedsuggestions according to some examples of the present disclosure.

FIG. 12 shows a flowchart of a method for providing suggestions in acommunication session of a network-based communication service accordingto some examples of the present disclosure.

FIG. 13 shows a flowchart of a method of handling an interaction with anaction suggestion according to some examples of the present disclosure.

FIG. 14 is a block diagram illustrating an example of a machine uponwhich one or more embodiments may be implemented according to someexamples of the present disclosure.

DETAILED DESCRIPTION

Network-based communication services allow for quick and frequentcommunications between people. Individuals often discuss topics andinterests that they have with each other. During conversations it can bedistracting and cumbersome to participants when they need to leave theuser experience of the network-based communications application toperform one or more tasks related to their communication session. One ofthe primary user problems is the difficulty of task switching on devicesand the cognitive load of context switching. For example, if two friendsare communicating using the network-based communications service anddiscussing going to a movie, it may be distracting, difficult, andinconvenient to leave the user experience of the network-basedcommunications application to check their calendar, find show times ofmovies nearby they like, purchase tickets, and so on.

Disclosed in some examples are methods, systems, machine-readable media,and devices that deliver personalized suggestions for participants in anetwork-based communication session. These personalized suggestions aredelivered to the user's network-based communications application andcomprise options for taking actions, content suggestions, and smartreplies. These personalized suggestions prevent the user from having toleave the user experience of the network-based communicationsapplication. The suggestions may be based upon the current conversationand are delivered personally to each participant. That is, thesuggestions delivered to one party of the conversation are personal tothat party. Each party may therefore have their own differentpersonalized suggestions delivered throughout the conversation.

For example, if the conversation is about movies, the suggestionsdelivered to a first party of the conversation may deliver movie timesfor movies that align with interests of the first party, whereas thesuggestions delivered to a second party of the conversation may delivermovie times for different movies that align with the different interestsof the second party. The interests of a particular user may be learnedover time from interactions with the network-based communication serviceand other applications on one or more computing systems of the user.This contrasts with personalized suggestion services which have onepersonalization “assistant” for a particular conversation that providesthe same suggestions for all parties.

Suggestions may be generated based upon a number of different modelsthat determine the communicative intent of a message from theconversation. Each model therefore is specifically tailored to detectdifferent types of intent. The intent models may return one or moredetermined intents. Suggestions may be determined from these intents andthe suggestions are then ranked in order of the system's perceivedimportance to the user. Having a number of different models where eachmodel is customized for detecting certain kinds of intents may be moreaccurate than general models that try and discern all possible intents.

Suggestions may be ranked based upon previous interactions withpreviously delivered suggestions. The ranking may utilize heuristics, asystem-wide model, and a user-based model. The rankings may be basedupon the type of suggestion. For example, if a user has previously shownlots of interest in content suggestions, but less interest in actionsuggestions, the system may prioritize content suggestions over actionsuggestions. The ranking may also be based upon the suggestion itself.For example, the user may have previously shown lots of interest inrestaurant suggestions, but less interest in movie suggestions. In thisexample, the system may prioritize restaurant suggestions over moviesuggestions.

The personalized suggestions may be delivered through a personal digitalassistant (e.g., such as CORTANA® from MICROSOFT®). While newsuggestions are created based upon new messages that arrive, oldsuggestions may also be persisted for a period of time so as to giveusers time (especially in a fast-moving conversation) to select aparticular suggestion before that suggestion is replaced (e.g.,deprecated).

To protect user privacy, Graphical User Interfaces (GUTs) for userconsent and opt-in or opt-out may be provided to allow users to assentto, or restrict, the collection of personal information. In someexamples, these GUIs may allow users to delete previously collectedinformation or set restrictions on the types and content of informationcollected.

Turning now to FIG. 1 , a diagram of a GUI 100 produced by anetwork-based communications application of a network-basedcommunications service is shown according to some examples of thepresent disclosure. Information bar 105 identifies the parties to theconversation—in this case Jamie. Message bubble 110 conveys the user'smessage to Jamie offering a dinner out. Avatar 115 may show a smallpicture or other icon to accompany responses from Jamie. Jamie's messagein reply is shown in message bubble 120 accepting dinner, but askingthat the user call the babysitter after work. The system detects Jamie'smessage and provides some personalized suggestions using GUI elements ina personalized suggestion area 125. In some examples, the GUI elementscontaining the suggestions may be buttons. In some examples, the GUIelements containing the suggestions may be given a bounded area of thescreen and the system may select suggestions such that the suggestionsfit onto the screen. For example, as shown in FIG. 1 , a single row ofsuggestions is shown, including suggestions 130, 135, and 140.

Suggestion 130 is an action suggestion offering to create a reminder tocall the babysitter after work. If suggestion 130 is selected, the usermay be taken to a GUT screen such as shown in FIG. 2 . Suggestion 135 isa smart reply suggestion that, when selected, sends a message saying “Iwill” to Jamie. Suggestion 140 is also a smart reply suggestion that,when selected, sends a message saying “I can't” to Jamie. Text entry•display 145 shows messages as they are entered using on-screen keyboard150 (e.g., touch keyboard). Although a mobile computing device GUI isshown, one of ordinary skill in the art with the benefit of thisdisclosure will appreciate that other GUIs for other device types mayinclude similar features as shown in FIG. 1 as well as features shown inFIGS. 2-7 .

Turning now to FIG. 2 , a diagram of a GUI 200 produced by anetwork-based communications application of a network-basedcommunications service is shown according to some examples of thepresent disclosure. GUI 200 may be displayed upon selection of the“create a reminder” suggestion 130 from FIG. 1 . The communicationinterface may be automatically switched from communicating with theother person (e.g., Jamie) to communicating with a personal digitalassistant (e.g., MICROSOFT® CORTANA®). This is signaled by changing theinformation bar 205 to indicate the “PERSONAL ASSISTANT” is now who theuser is communicating with. Window close button 210 allows the user toclose the conversation with the personal digital assistant and return tothe conversation with the other person. While the user is communicatingwith the personal digital assistant, the previous network-basedcommunication session may be kept active (e.g., the communication withJamie from FIG. 1 would not end). Personal digital assistant avatar 215also signals to the user that the conversation is with the personaldigital assistant. Action message 220 shows the time the action wastaken (12:10) and the type of action (a reminder). Details message 230shows details about the action e.g., the reminder text, and when thereminder is displayed. Undo button 240 allows the reminder to be undone.In some examples, the user need not enter any other input (the reminderis now set). In other examples, the user may have to enter an inputsignifying a confirmation.

Turning now to FIG. 3 , a diagram of a GUI 300 produced by anetwork-based communications application of a network-basedcommunications service is shown according to some examples of thepresent disclosure. The user has sent a message, displayed in messagebubble 310, saying “How's it going?” to Jamie. Jamie has replied with amessage displayed in message bubble 315 saying “Not bad . . . do youwant to see a movie tonight?” The system detects that the intent behindthis statement is that the participants are interested in movies.Suggestion area 325 contains three suggestions: Content suggestion 330offering to display movie times, smart reply suggestion 335 “Sure,” andsmart reply suggestion “I can't” 340. Selection of the movie show timescontent suggestion 330 displays a GUI such as GUI 400 of FIG. 4 .

Turning now to FIG. 4 , a diagram of a GUI 400 produced by anetwork-based communications application of a network-basedcommunications service is shown according to some examples of thepresent disclosure. The message bubble 315 from Jamie is scrolledupwards in the GUT and two movie suggestions, 410 and 415 are displayedin-line with the conversation. In the example of FIG. 4 , the genre ofthe movie (“Action,” “Drama”) is displayed along with the title (“MOVIETITLE A,” and “MOVIE TITLE B”), the rating (“PG-13”, “R”), the releaseyear (“2016”), and a rating as determined by a network-based movierating site. In other examples, other information may be presented, suchas a link to a preview, a preview video (playable in the network-basedcommunication application), a synopsis, a link to purchase tickets, showtimes for nearby theatres, or the like.

These movies are suggested based upon a user profile. For example, theprofile of the user may have indicated that the user likes action moviesand so the movie suggestions that are action movies may be prioritized(e.g., with the highest priority suggestions on the left to lowestpriority on the right). The profile may be only for the network-basedcommunication service, or may be for other applications as well as thenetwork-based communication service. For example, a personal digitalassistant such as CORTANA® may learn user preferences across multiplesoftware products and computing devices. Example information in theuser's profile includes the user's current location, the user's schedule(e.g., for movie times), a user's preferred movie genre, maximum rating(e.g., not displaying “R” rated movies for underage users), restaurantpreferences, other preferences, and the like. In some examples, thesuggestions may be interactive. For example, selecting a movie will showadditional information such as show times, local theatres, and the like.

Turning now to FIG. 5 , a diagram of a GUI 500 produced by anetwork-based communications application of a network-basedcommunications service is shown according to some examples of thepresent disclosure. Jamie has sent the user a message displayed inmessage bubble 515 saying “Hi!” The system has determined suggestions insuggestion area 525 that are smart replies. Smart reply 530 is a messagesaying “How's it Going?” Smart reply 535 is a message saying “I Can'tTalk Now.” Selecting one of the smart reply options will send thecorresponding smart reply message to the other users in thecommunication session. Smart reply text may be determined based uponcommonly used responses to the message sent by one of the otherparticipants. The smart reply text may be based upon the user's scheduleand current activity. For example, if the user is currently busy (basedupon his schedule or computing activity), the smart reply “I Can't TalkNow” may be generated and in some examples prioritized higher than othersmart replies.

Turning now to FIG. 6 , a diagram of a GUI 600 produced by anetwork-based communications application of a network-basedcommunications service is shown according to some examples of thepresent disclosure. FIG. 6 is a modified GUI of FIG. 5 where the userhas selected the “How's It Going?” smart reply 530. Jamie's messagedisplayed in message bubble 515 is scrolled up in the visible window andthe smart reply is shown as a sent message bubble 620.

Turning now to FIG. 7 , a diagram of a GUI 700 produced by anetwork-based communications application of a network-basedcommunications service is shown according to some examples of thepresent disclosure. The user sends the message to Jamie, shown inmessage bubble 715, that the user is “Finishing up with work. Should bedone soon.” Jamie has replied with a message, displayed in messagebubble 720, asking whether the user has heard about a new movie(“Detective Jim”). The system has determined that “Detective Jim” is amovie and has determined that it has information about the movie toshare with the user. Suggestions shown in suggestion area 725 include:suggestion 730, which is a content suggestion that if selected will showinformation describing the “Detective Jim Movie;” smart reply suggestion735 which is a “YES” message; and smart reply 740 which is a “NO”message. Selecting suggestion 730 will display information about themovie (e.g., in one example, inline as in FIG. 4 , but in otherexamples, in another window, as in FIG. 2 ).

As can be appreciated from the previous GUI diagrams, the system maysuggest multiple suggestions of different types simultaneously. Forexample, an action suggestion simultaneous with a content suggestion anda smart reply. Additionally, as can be appreciated, these suggestionsmay be sorted based upon a personalized order the system perceives asmost relevant to the user. This order may be customized based uponfeedback from all users of the system, as well as feedback received fromeach individual user that is used to individually customize that user'sexperience. Furthermore, as previously stated, these suggestions mayonly appear for the user, but not for other users in the communicationsession. Additionally, suggestions may be persisted for several messagesto give the user an opportunity to accept them before they are removed.

The system may provide the suggestions without user input or useractivation apart from communications sent or received as part of theongoing conversation. For example, the system may provide personalizedsuggestions for each participant in a conversation without being askedby the user to provide the suggestions or assistance (although variousprivacy settings may allow the user to turn off or restrict thesuggestions). In some examples, interactions with the personal assistantmay be presented in a separate conversation window GUT that is styled asa conversation between the personal assistant (e.g., CORTANA) and theuser. For example, as demonstrated in FIG. 2 . This private conversationis not viewable or discernable to the other participants in the mainconversation.

Turning now to FIG. 8 , a system diagram of the network-basedcommunications system with personalized suggestions 800 is shownaccording to some examples of the present disclosure. The components ofFIG. 8 may be configured to communicate with each other, for example,via a network coupling (such as network 815), shared memory, a bus, aswitch, and the like. It will be appreciated that each component may beimplemented as a single component, combined into other components, orfurther subdivided into multiple components. Any one or more of thecomponents described herein may be implemented using hardware (e.g., aprocessor of a machine) or a combination of hardware and software (forexample machine 1400 of FIG. 14 ). For example, while the figure showsthe network-based communications service 850, information service 855,suggestion service 860, action service 892, and intent models 897 asseparate computing devices in communication with each other throughnetwork 815, the functionality of those components may be implemented bythe same computing device, or by different computing devices connectedthrough a different network (e.g., a local area network LAN) thannetwork 815.

Computing devices 805 and 810 (shown as mobile devices such as smartphones) may include an instance of an operating system 820 and acommunication application 825. Operating system 820 may provide one ormore services to applications, such as a communication application 825.Services may include memory management, scheduling, multi-tasking,notifications, interrupts, event notifications, hardware interfaces, andthe like. Communication application 825 may be a network-basedcommunication application and may include a GUT component 830, servicecomponent 835, and cache component 840. GUI component 830 may render oneor more GUIs, for example, GUIs such as those shown in FIGS. 1-7 .

Service component 835 may connect to the network-based communicationsservice 850 and may send messages entered by the user of the computingdevice 805 via the GUT provided by the GUI component 830 to one or moreother users of the network-based communications service 850. Servicecomponent 835 may receive one or more other messages from other usersthrough the network-based communications service 850 and may cause thosecommunications to be displayed in the GUI provided by the GUI component830. Service component 835 may also receive one or more suggestions fromthe suggestion service 860 and may cause the suggestions to be displayedvia the GUT provided by the GUI component 830. Additionally, user inputon a suggestion may be sent by the service component 835 to thesuggestion service 860. For example, an indication that the userinteracted with a suggestion. This allows the suggestion service to takean action on behalf of the user, send additional content or information(that may have been requested by the user), and to customize suggestionrankings for the user. As a result, additional information, content, orinteractions may be sent by the suggestion service 860. The servicecomponent 835 may cause this additional information to be displayed in aGUI provided by GUI component 830. In other examples, information neededfor the interactions are sent by the suggestion service 860 along withthe suggestion. The suggestion may comprise the suggestion that isinitially displayed (e.g., “DETECTIVE JIM MOVIE” 730 from FIG. 7 ), andwhen selected, the additional information already sent by the suggestionservice 860 may then be displayed.

Cache component 840 may cache the communications and the suggestions andallow users to review the past communications and past suggestions.Users may select or activate the past suggestions at any time whiletheir communication session is active. In some examples, the cachecomponent may allow for reviewing past communications and suggestionsand activating those suggestions at any time.

Network-based communications service 850 may receive communications fromcomputing devices and route those communications to other computingdevices participating in the network-based communication session. Forexample, a communication from computing device 805 may be routed tocomputing device 810 if computing device 810 and computing device 805are in a communications session together. Additionally, network-basedcommunications service 850 may route a copy of these communications tosuggestion service 860. Suggestions from suggestion service 860 may berouted directly to participants in the communication session, or throughthe network-based communications service 850.

Suggestion service 860 may receive communications from service component835 or from the network-based communications service 850 and maygenerate one or more suggestions and return those suggestions to thecomputing devices in the communication session. These suggestions may bepersonalized for each user and thus, suggestions given computing device805 may be different than suggestions given computing device 810 giventhe same communication messages. Suggestions may be personalized basedupon a user profile stored at the computing device or a network-basedprofile service (e.g., a network based computing device storing aplurality of user profiles to provide for inter-computing deviceknowledge of the profiles).

Suggestion service 860 may include a distribution component 880.Distribution component may distribute the communications received fromthe network-based communications service 850 to one or more intentmodels, such as intent model 897. Intent model 897 determines, basedupon a model, a communicative intent of the message. That is, the intentmodel 897 may determine one or more meanings of the message. The intentmodel 897 may determine intent based upon rules e.g., heuristics such asdetermining intent based upon the presence of one or more particularkeywords. In other examples, the intent model 897 may be an unsupervisedor supervised machine learning model. Examples include natural languageprocessing, decision trees, random forests, support vector machines, andthe like. An example intent model is described in U.S. application Ser.No. 14/714,137 entitled “Automatic extraction of commitments andrequests from communications and content,” filed on May 15, 2015 andU.S. application Ser. No. 14/714,109 entitled “Management of commitmentsand requests extracted from communications and content,” filed on May15, 2015, both of which are incorporated herein by reference in theirentirety. In some examples, the communication may be sent to multipleintent models, each of which is designed to determine a different intentor a different type of intent. In some examples the communication may besent to multiple intent models, each of which is a different type ofmodel: that is, one model might be rule based, another might be amachine learning model.

Intent models 897 may respond with one or more calculated communicativeintents. Each intent model 897 may be trained and/or designed to detectcertain types of intent. For example, one model may be trained for afirst type of intent and a second model may be trained for a second typeof intent. For example, one model may be designed to detect intent to bereminded about a task. Another model may be designed to detect intent toget information about or reserve a table at a restaurant. Other examplesinclude information about movies, directions, ride sharing or taxiservices, share an address, determine details about an entity (e.g., aperson, place, or thing), or add a contact. By providing thecommunication to a number of specially trained models looking forspecific intents, the system can more accurately determine user intentthan providing the communication to a general model.

In some examples, intent models 897 may not respond if the communicationdoes not produce an intent that is above a certainty threshold. However,multiple models may respond with a calculated intent. Suggestiongeneration component 885 may then generate suggestions for each intentreturned by the models. Suggestions may be categorized as actions (e.g.,setting a calendar reminder, making reservations, and the like), contentsuggestions (providing information about an entity, a movie,restaurants, and the like), smart replies (e.g., providing contextualtext replies to the analyzed message), and the like. Example actionsuggestions include opening a document, setting a calendar reminder,calling a phone number, going to a website, sending a text (at aparticular time to a particular contact), setting an alarm (e.g., a wakeup alarm), purchasing a product, obtaining a ride (e.g., through a ridedispatch application), making restaurant reservations, opening adocument, and the like. Example content suggestions may includeproviding information on an entity (e.g., a company, store, movie, book,restaurant), showing a document, showing a video, showing an audio clip,showing a picture, and the like. Example smart replies include shorttext, emoji's, pictures, videos, audio clips, and the like.

Suggestion generation may be done based upon one or more if-then-elserule sets that generate suggestions based upon the returned intents. Forexample, if the returned intent is that the user is discussing aparticular entity, then the suggestion may be more information on theentity. As another example, if the returned intent is that the userwishes to be reminded of something, then the suggestion is a calendarreminder. Other methods of converting the intents to suggestions may beutilized such as decision trees, random forests, and the like.

Content population component 890 may populate the suggestions withcontent from one or more sources, such as information service 855 (e.g.,a movie time service, a calendar service, a restaurant service, a searchengine, a website, or other database). Content population component 890may utilize one or more Application Programming Interfaces (API)s tocommunicate with these services. The content population component mayutilize a user profile of the user. For example, if the suggestion ismovie times near the user, the content population tool may use alocation of the user as stated in the user profile to contact a movieinformation service to provide show times near the user. Otherpreferences of the user in the user profile may be utilized to populatecontent. For example, a user's restaurant preferences may be utilized toselect various nearby restaurants when suggesting local restaurants. Insome examples, the preferences of the user may be learned by one or moreservices (e.g., search services, the communications service, thesuggestion service, or other services) and stored in the user profile.For example, preferences for movies (action movies, drama movies, etc.)or other preferences may be utilized to filter or customize thepopulated content. This allows the suggestions to be personalized to theusers likes and dislikes. For example, the system may learn that theuser is a vegetarian, and may suggest local vegetarian restaurants.

Suggestion ranking component 895 may rank the suggestions that weredetermined by suggestion generation component 885. Suggestion rankingcomponent may have rules that specify rankings. For example, the systemmay rank action suggestions ahead of content suggestions, and contentsuggestions ahead of smart replies. Other example heuristics may also beutilized. For example, heuristics that take into account the actualsubject of the suggestion. For example, calendar action suggestions maybe ahead of purchase action suggestions and so on. In some examples, theheuristics may be adjusted based upon feedback from all users of thesuggestion service 860. For example, if users typically interact with(e.g., select) the smart replies more than the content suggestions, thesmart replies may be prioritized over the content suggestions. Thus, byusing feedback, a global user model may adjust the heuristics to bettermeet user needs.

In some examples, in addition to a global user model, each user may havea learned preference for certain types of suggestions. Thus, even thoughthe global model may determine that the larger population of usersinteract with the action suggestions more than the smart replies, andsmart replies more than content suggestions, if a particular user likessmart replies more than action suggestions, smart replies may beprioritized over other suggestion types. Example global and user modelsmay include neural networks, decision trees, random forests, regressionalgorithms, and the like.

In some examples, the three models (heuristic model, global model,individual model) may be combined such that the models may have ahierarchy. Thus, the individual model may control, unless there isinsufficient personal interaction data, in which case the global modelwill control, unless there is insufficient global interaction data, inwhich case heuristics are utilized. In other examples, each model maycontribute to the final ranking. For example, each model may assign afixed amount of points to each suggestion according to the rules of themodel. Each suggestion may then be scored by using a weighted summationcombining the point values for each suggestion according to each model.Each model may be weighted according to a perceived accuracy of themodel to the user's preferences. For example, the individual model maybe weighted greater than the global model, and both may be weightedhigher than the heuristic model. Weights may change dynamically overtime based upon user feedback in the form of explicit feedback—e.g., aGUI element indicating satisfaction or dissatisfaction with a suggestionor based upon implicit feedback in the form of interactions withsuggestions (interaction with a suggestion signifying satisfaction).

Rankings may be calculated based upon the type of suggestion (action vs.content vs. smart reply), but also may be ranked based upon the actualsuggestion content. For example, if the intent is determined to be anexpressed interest in a restaurant, suggestions may be: 1.) make areservation 2.) schedule an appointment or a reminder and 3.) providemore information on the restaurant. All three are action suggestions,but these suggestions may be ranked based upon preferences for thesespecific actions.

Interaction component 875 handles user interactions with suggestions bysending additional information (such as content determined by thecontent population component 890), communicating with action services890 to carry• out an action suggestion, and the like. Action services892 may be calendar services, restaurant reservation services, taxidispatch services, and other action services.

Turning now to FIG. 9 , a data flow of a suggestion generation 900 isshown according to some examples of the present disclosure. Suggestionservice 960 may be an example of suggestion service 860. In someexamples, distribution component 980 may be an example of distributioncomponent 880. In some examples, suggestion generation component 985 maybe an example of suggestion generation component 885. In some examples,content population component 990 may be an example of content populationcomponent 890. In some examples suggestion ranking component 995 may bean example of suggestion ranking component 895. As noted above withrespect to FIG. 8 , all, or some, of the components are configured tocommunicate with each other, for example, via a network coupling, sharedmemory, a bus, a switch, and the like. It will be appreciated that eachcomponent may be implemented as a single component, combined into othercomponents, or further subdivided into multiple components. Any one ormore of the components described herein may be implemented usinghardware (e.g., a processor of a machine) or a combination of hardwareand software.

Communication text 905 (which max′ include text, emoji, photos, etc.)from a communication session is handled by the distribution component980. Distribution component 980 inputs the communication text 905 to oneor more intent models 907-910. For example, entity identification andlinking model 907 which may identify entities referenced within thecommunication text 905 and determine whether the user intended to referto that entity (and in some examples returns information about theentity). Text entity extraction model 908 may determine from thecommunication text 905 whether the user intended to set a reminder, acalendar event, a meeting request, restaurant reservations, or the like(and in some examples parses the communication text 905 to determinedetails about the reminder). Smart reply model 909 determines if a smartreply text is indicated (and in some examples, determines the smartreply text).

As noted in FIG. 9 , any number of other models may be utilized todetermine intent, such as other model 910. The models 907-910 may beimplemented as part of suggestion service 960, or may be separateservices in communication with the suggestion service 960. As previouslynoted, the models may be machine learning models, including supervisedor unsupervised learning models. Examples include neural networks,regression, natural language processing, random forest, decision tree,decision jungle, or other models. Models may interact with actionservices, such as action service 892 of FIG. 8 to determine one or moreproperties of the user in order to better determine intent. For example,the action service may be a calendar service (e.g., MICROSOFT OUTLOOKS)that may keep track of a user's appointments and meetings. The modelsmay consult the calendar service to determine if a particular intent iscompatible with properties (e.g., the user's schedule) of the user. Forexample, if the user is already busy, then a smart reply of I'm busy”may be appropriate.

The suggestion generation component 985 receives the determined intentsand maps them to suggestions. Returned intents may include content aswell as or instead of semantic meanings, such as text for smart replies,and the like. For example, the suggestion generation component 985 usesa database, such as an intent to suggestion mapping 987, which maycontain possible intents and an indication of the correspondingsuggestion. For example, a calendar entry intent may have acorresponding calendar entry suggestion. In other examples, rather thana table, the intent to suggestion mapping 987 may be rule based, withif-then statements that are evaluated against the value of the intent todetermine the suggestion. For example: if intent is to create a calendarentry, then the corresponding suggestion is to create a calendar entry.More than one suggestion may be created from a single intent.

Suggestion generation component 985 may interact with action services,such as action service 892 of FIG. 8 to determine one or more propertiesof the user. For example, the action service may be a calendar service(e.g., MICROSOFT OUTLOOKS) that may keep track of a user's appointmentsand meetings. The suggestion generation component 985 may consult thecalendar service to determine if the suggestion is compatible withproperties (e.g., the user's schedule) of the user. For example, if theuser is already busy, then a suggestion that the user see a movie mighttrigger a suggestion that the user is busy. In some examples, themodels, such as the smart reply model 909 may also consult with externalservices. For example, if the user is already busy for dinner, the smartreply model may return a smart reply that may indicate that the user isdeclining an invitation to go to dinner because they are busy.

Content population component 990 may take the suggestions and populatecontent in the suggestions. For example, by contacting an informationservice 955. Content population may also utilize profile data 992 of theuser. Profile data 992 may be obtained based upon previous usage of thesuggestion service 960 and may include action preferences, contentpreferences, location information, and the like. For example, theprofile data 992 may include a user's movie preferences, restaurantpreferences, transportation preferences, and the like. The profile data992 may be context specific, such that it stores preferences for varyingcontexts of the user. For example, it may store that the user prefersIndian restaurants on Saturday nights, but does not like to eat Indianfood on Friday nights. The system may then populate a suggestion oflocal restaurants with information on Indian restaurants on Saturdaynights, but another restaurant type on Friday nights.

In some examples, the intent that is returned by the models already hassome content, such as a parsing of the communication text 905. Forexample, the text entity extraction model 908 may parse out a date andtime for a reminder when it determines the intent is to set a reminder.Content population component 990 may utilize this information topopulate the suggestion with the date and time of the reminder. In otherexamples, the content population component 990 may itself analyze thecommunication text 905 using natural language processing techniques todetermine content based upon the intent and the suggestion.

Suggestion ranking component 995 may rank the suggestions and select aset of one or more (or all) of the suggestions to send to the computingdevice of the user. As noted, the suggestion ranking component 995 mayconsult both user profile data 992 and interaction history 994 to rankthe suggestions relative to each other based upon a global model that isbuilt using interactions of all users with all suggestions for allcommunication sessions analyzed by the suggestion service 960, as wellas an individual model that is built using interactions of the currentuser with the suggestions for all communications sessions for that user.

The suggestion ranking component 995 may suggest all the suggestions ormay select a subset of suggestions to send to the user's computingdevice based upon the ranking. For example, the suggestion rankingcomponent 995 may select a top predetermined number or percentage ofhigh ranking suggestions (e.g., top three, or top 10%) and send them tothe computing device of the user. In other examples, the suggestionranking component 995 may determine a screen size of the user'scomputing device. The suggestion ranking component 995 may select a setof suggestions to send to the user's computing device that maximizes atotal utility of suggestions considering constraints on the length ofthe suggestions and a size of the suggestion area of a GUI of thecomputing device of the user. For example, a ranking may be reflected ina number of points where a higher ranking means higher point values. Forexample, if the user's computing device only displays a single line ofsuggestions and a total of 30 characters the suggestion rankingcomponent 995 may select the suggestions that maximize the total pointsgiven the space constraints and suggestion size. This means that ahigher ranking but longer suggestion may be bumped for two shortersuggestions that add up to a higher total than the longer suggestion.

In some examples, the suggestions selected by the suggestion rankingcomponent 995 may comprise different types of suggestions. For example,a content suggestion, an action suggestion, and a smart reply suggestionmay all be suggested at the same time. As previously noted, the systemmay record interactions with the given suggestions and the system mayuse this feedback to learn how to better rank the suggestions. In someexamples, this feedback may be shared with the intent model 897 to allowthe intent model to better learn the user's communicative intent. Thus auser's interaction with a particular suggestion provides both anindication as to how suggestions should be ranked and also provides anindication as to whether the communicative intent determined by theintent models correctly identified the intent of the communication. Lackof interaction with suggestions also indicates that those suggestionsmay be deprioritized and that the intent model was incorrect in itsdetermination of communicative intent.

In some examples, interactions with suggestions may be handled at theuser's computing device. For example, any information needed for theinteraction may be provided by the suggestion service when sending thesuggestion. Upon selecting the suggestion, the user's computing devicethen displays this information. In some examples, the suggestion servicemay provide a link to obtain the information needed to handle anyinteractions rather than the information itself. For example, foractions, the suggestion service may provide a link and information onhow to implement the action. For example, a link to a calendar servicefor reminders. The suggestion service may create a message that theuser's computing device may send to a network address indicated by thesuggestion service (e.g., a calendar or reminder service) to create thereminder. This allows for distributed processing of action suggestions(distributed to the end points—i.e., the user devices) but at the sametime allowing for flexibly adding new actions.

Interactions may utilize the suggestion service to assist in providingthe interaction. Turning now to FIG. 10 , a data flow of a suggestiongeneration 1000 is shown according to some examples of the presentdisclosure. Suggestion service 1060 may be an example of suggestionservice 960 and 860 according to some examples of the presentdisclosure. An interaction with a suggestion 1010 is received at thesuggestion service 1060 by the interaction component 1020. Interactioncomponent 1020 may respond with additional information regarding thesuggestion or additional context. For example, movies in the area of theuser, additional context, and the like. In some examples, thisadditional information may be obtained from an information service 1055(which may be an example of information service 955, 855). The user mayinteract with this additional content, such as by selecting a movie andreceiving more content about the movie. This ensures a premium userexperience without the user having to leave the user interface of thecommunication program. The interactions and the additional content maybe created with the help of the profile data 1092 and interactionhistory 1094. Profile data 1092 may be an example of profile data 992 ofFIG. 9 . Interaction history 1094 may be an example of interactionhistory• 994 of FIG. 9 . Upon interacting with a suggestion, theinteraction component 1020 may update the interaction history 1094 soindicate the interaction so the suggestion ranking component may updateits user based model.

Interaction component 1020 may interact with an action service 1092.Action service 1092 may be an example of action service 892 of FIG. 8 .Interaction component 1020 may consult with action service 1092 toprovide content and interactions associated with the suggestions. Forexample, to provide movie times, restaurant listings, and the like.Interaction component 1020 may also interface with action service 1092to implement any action suggestions selected by the user. For example,booking a table at a restaurant, calling a cab, or the like.

Turning now to FIG. 11 a flowchart of a method 1100 of providingpersonalized suggestions is shown according to some examples of thepresent disclosure. FIG. 11 may be implemented by the suggestion service(e.g., suggestion service 860, 960, 1060). At operation 1110 thesuggestion service may receive text of a communication between users ofa network-based communication service. The communication may have beenreceived by the user from another user or sent by the user to anotheruser.

At operation 1120 the text of the communication may be submitted to oneor more intent models. Each of the intent models testing the text of thecommunication for a different type of communicative intent. Submittingthe text includes sending the text to the model over a network (e.g.,network 815) if the model is not part of the suggestion service. Themodel may execute on one or more computing devices. At operation 1130the responses from the model are received. The response may indicate acalculated communicative intent of the communication. For example, anintent to make an appointment, view information associated with anidentified entity (person, place, or thing) in the communication, or thelike. At operation 1140, the system may generate a set of suggestionsbased upon the responses. Suggestions may be generated using a mappingbetween intents and suggestions or a set of rules. In other examples, amachine learning classification algorithm such as a multiclass logisticregression algorithm, a multiclass neural network, a multiclass decisionforest, or the like may learn appropriate suggestions based uponreturned intents. The machine learning algorithm may utilize trainingdata from users that identify appropriate suggestions based upon thelearned intent of the communication.

At operation 1150 the suggestions may be ranked. As noted, thesuggestions may be ranked based upon heuristic models, globalsystem-wide models, and user-specific models. The models may learn basedupon feedback given to suggestions in the form of interacting with thesuggestions (or not interacting with the suggestions). In some examples,the heuristic models may setup a priority ordering based upon suggestiontype. The global model and the user specific models may modify theserules based upon user interactions. In other examples, other machinelearning models may be utilized such as logistic regression, linearregression, neural networks, decision trees, decision forests, and thelike. These models may be initially trained using the heuristic model,then the model may be refined using first the global interaction dataand then user specific interaction data. These models may produce arelevancy score based upon prior interactions with suggestions (eitherusing only the suggestion type and/or the suggestion content itself).Suggestions may be ranked based upon the relevancy score (e.g., highestscores may be ranked highest). By starting with a set of heuristics, theinitial users of the system may experience a baseline rankingperformance that is then trained by both the global user base and theuser's own preferences and selections. The use of both individual andsystem-wide interactions provides a greater amount of training data toincrease the model accuracy. Once enough individualized interaction datais obtained, this interaction data may be weighted more heavily intraining the model so as to customize the rankings for the user.

In some examples at operation 1150, previously delivered suggestions mayalso be ranked. These suggestions may be kept active for a predeterminedperiod of time to allow the user the opportunity to select them in afast-moving conversation. For example, without persisting previouslydelivered suggestions, these suggestions may be quickly be buried. Inthese examples, old suggestions are continued for a time to allow theuser to respond. Once a predetermined time period is over, the relevanceof the past suggestion is decreased using a time decay function.

At operation 1160 the suggestions may be selected. For example, the toppercentage or number of suggestions based upon rank (e.g., top 5, or top10%). As noted, if the computing device has limited space a function maybe applied to maximize the utility of the selections. At operation 1170the suggestions may be sent to the user. As noted, additionalcommunications between the system and the computing device of the usermay deliver additional information and content and assist the user intaking suggested actions.

Turning now to FIG. 12 , a flowchart of a method 1200 for providingsuggestions in a communication session of a network-based communicationservice is shown according to some examples of the present disclosure.FIG. 12 may be performed by the computing device of the users of thecommunication session, for example, computing devices 805, 810 of FIG. 8, (e.g., the communication application 825). At operation 1210 thecomputing device may provide a communications GUT for utilizing thenetwork-based communication service. At operation 1220 the computingdevice may receive one or more suggestions from a suggestion service. Atoperation 1230 the suggestions may be displayed in the order specified(e.g., based upon the rank) by the suggestion service. At operation 1240the computing device may receive an interaction with one of thesuggestions. At operation 1242, an indication of the interaction may besent to the suggestion service (e.g., to tune the ranking models). Ifthe interaction is a smart reply and the user has selected the smartreply, at operation 1245 the computing device may send the smart reply.At operation 1250 if the suggestion was a content suggestion thecomputing device may display the content. In some examples, prior todisplaying the content, the application may contact the suggestionservice to obtain the content. At operation 1255 if the suggestion wasan action suggestion, flow proceeds to FIG. 13 .

Turning now to FIG. 13 , a flowchart of a method of handling aninteraction with an action suggestion 1300 is shown according to someexamples of the present disclosure. Optionally at operation 1310, theGUI may switch to presenting a conversation window between the user andthe personal digital assistant, while the original conversationcontinues in the background. At operation 1320 the action details may bepresented. For example, in the case of a dinner reservation, reservationdetails may be presented and the user may confirm them. In the case of aproduct purchase, details of the product, payment informationselections, and shipping information may be shown and the user mayconfirm them. At operation 1330 the computing device may receive theconfirmation from the user. At operation 1340 the computing device maysend a commit instruction to commit the action to either the suggestionservice or directly to the action service.

FIG. 14 illustrates a block diagram of an example machine 1400 uponwhich any one or more of the techniques (e.g., methodologies) discussedherein may perform. In alternative embodiments, the machine 1400 mayoperate as a standalone device or may be connected (e.g., networked) toother machines. In a networked deployment, the machine 1400 may operatein the capacity of a server machine, a client machine, or both inserver-client network environments. In an example, the machine 1400 mayact as a peer machine in peer-to-peer (P2P) (or other distributed)network environment. The machine 1400 may be a computing device such asa server, a personal computer (PC), a tablet PC, a set-top box (STB), apersonal digital assistant (PDA), a mobile telephone, a smart phone, aweb appliance, a network router, switch or bridge, or any machinecapable of executing instructions (sequential or otherwise) that specifyactions to be taken by that machine. For example, the GUIs in FIGS. 1-7may be created, rendered, and displayed by a machine 1400. Additionally,machine 1400 may implement any of the components of FIGS. 8, 9, and 10and implement the methods of FIGS. 11-13 . Further, while only a singlemachine is illustrated. the term “machine.’ shall also be taken toinclude any collection of machines that individually or jointly executea set (or multiple sets) of instructions to perform any one or more ofthe methodologies discussed herein, such as cloud computing, software asa service (SaaS), other computer cluster configurations.

Examples, as described herein, may include, or may operate on, logic ora number of components, modules, applications, or mechanisms.Components, modules, applications, or mechanisms are tangible entities(e.g., hardware) capable of performing specified operations and may beconfigured or arranged in a certain manner. In an example, circuits maybe arranged (e.g., internally or with respect to external entities suchas other circuits) in a specified manner as components, modules,applications, or mechanisms. In an example, the whole or part of one ormore computer systems (e.g., a standalone, client or server computersystem) or one or more hardware processors may be configured by firmwareor software (e.g., instructions, an application portion, or anapplication) as components, modules, applications, or mechanisms thatoperate to perform specified operations. In an example, the software mayreside on a machine readable medium. In an example, the software, whenexecuted by the underlying hardware of the component, module,application, or mechanism, causes the hardware to perform the specifiedoperations.

Accordingly, the terms “module,” “component,” “application,” or“mechanism” is understood to encompass a tangible entity, be that anentity that is physically constructed, specifically configured (e.g.,hardwired), or temporarily (e.g., transitorily) configured (e.g.,programmed) to operate in a specified manner or to perform part or allof any operation described herein. Considering examples in whichmodules, components, applications, or mechanisms are temporarilyconfigured, each of them need not be instantiated at any one moment intime. For example, where the modules, components, applications, ormechanisms comprise a general-purpose hardware processor configuredusing software the general-purpose hardware processor may be configuredas respective different modules, components, applications, or mechanismsat different times. Software may accordingly configure a hardwareprocessor, for example, to constitute a particular module, component,application, or mechanism at one instance of time and to constitute adifferent module, component, application, or mechanism at a differentinstance of time.

Machine (e.g., computer system) 1400 may include a hardware processor1402 (e.g., a central processing unit (CPU), a graphics processing unit(GPU), a hardware processor core, or any combination thereof), a mainmemory 1404 and a static memory 1406, some or all of which maycommunicate with each other via an interlink (e.g., bus) 1408. Themachine 1400 may further include a display unit 1410, an alphanumericinput device 1412 (e.g., a keyboard), and a user interface (UI)navigation device 1414 (e.g., a mouse). In an example, the display unit1410, input device 1412 and UI navigation device 1414 may be a touchscreen display. The machine 1400 may additionally include a storagedevice (e.g., drive unit) 1416, a signal generation device 1418 (e.g., aspeaker), a network interface device 1420, and one or more sensors 1421,such as a global positioning system (GPS) sensor, compass,accelerometer, or other sensor. The machine 1400 may include an outputcontroller 1428, such as a serial (e.g., universal serial bus (USB),parallel, or other wired or wireless (e.g., infrared (IR), near fieldcommunication (NFC), etc.) connection to communicate or control one ormore peripheral devices (e.g., a printer, card reader, etc.).

The storage device 1416 may include a machine readable medium 1422 onwhich is stored one or more sets of data structures or instructions 1424(e.g., software) embodying or utilized by any one or more of thetechniques or functions described herein. The instructions 1424 may alsoreside, completely or at least partially, within the main memory 1404,within static memory 1406, or within the hardware processor 1402 duringexecution thereof by the machine 1400. In an example, one or anycombination of the hardware processor 1402, the main memory 1404, thestatic memory 1406, or the storage device 1416 may constitute machinereadable media.

While the machine readable medium 1422 is illustrated as a singlemedium, the term “machine readable medium” may include a single mediumor multiple media (e.g., a centralized or distributed database, and/orassociated caches and servers) configured to store the one or moreinstructions 1424.

The term “machine readable medium” may include any medium that iscapable of storing, encoding, or carrying instructions for execution bythe machine 1400 and that cause the machine 1400 to perform any one ormore of the techniques of the present disclosure, or that is capable ofstoring, encoding or carrying data structures used by or associated withsuch instructions. Non-limiting machine readable medium examples mayinclude solid-state memories, and optical and magnetic media. Specificexamples of machine readable media may include: non-volatile memory,such as semiconductor memory devices (e.g., Electrically ProgrammableRead-Only Memory (EPROM), Electrically Erasable Programmable Read-OnlyMemory (EEPROM)) and flash memory devices; magnetic disks, such asinternal hard disks and removable disks; magneto-optical disks; RandomAccess Memory (RAM); Solid State Drives (SSD); and CD-ROM and DVD-ROMdisks. In some examples, machine readable media may includenon-transitory machine readable media. In some examples, machinereadable media may include machine readable media that is not atransitory propagating signal.

The instructions 1424 may further be transmitted or received over acommunications network 1426 using a transmission medium via the networkinterface device 1420. The machine 1400 may communicate with one or moreother machines utilizing any one of a number of transfer protocols(e.g., frame relay, internet protocol (IP), transmission controlprotocol (TCP), user datagram protocol (UDP), hypertext transferprotocol (HTTP), etc.). Example communication networks may include alocal area network (LAN), a wide area network (WAN), a packet datanetwork (e.g., the Internet), mobile telephone networks (e.g., cellularnetworks), Plain Old Telephone (POTS) networks, and wireless datanetworks (e.g., Institute of Electrical and Electronics Engineers (IEEE)802.11 family of standards known as Wi-Fi®, IEEE 802.16 family ofstandards known as WiMax®), IEEE 802.15.4 family of standards, a LongTerm Evolution (LTE) family of standards, a Universal MobileTelecommunications System (UMTS) family of standards, peer-to-peer (P2P)networks, among others. In an example, the network interface device 1420may include one or more physical jacks (e.g., Ethernet, coaxial, orphone jacks) or one or more antennas to connect to the communicationsnetwork 1426. In an example, the network interface device 1420 mayinclude a plurality of antennas to wirelessly communicate using at leastone of single-input multiple-output (SIMO), multiple-inputmultiple-output (MIMO), or multiple-input single-output (MISO)techniques. In some examples, the network interface device 1420 maywirelessly communicate using Multiple User MIMO techniques.

OTHER NOTES AND EXAMPLES

Example 1 is a machine-readable medium that stores instructions whichwhen performed by a machine, cause the machine to perform operationscomprising: receiving, over a network, text of a network-basedcommunication between a first user of a first device and a second userof a second device; inputting the text of the communication to aplurality of intent models, each intent model testing the text for adifferent type of communicative intent; receiving a set of one or moreresponses from one or more of the plurality of intent models, eachresponse in the set indicating a calculated communicative intent of thecommunication; generating a set of personalized suggestions based uponboth the set of responses and a user profile of the first user; rankingthe set of suggestions relative to one another based upon a global modeland a user model, the user model specific to preferences of the firstuser of the first device; selecting a first and a second suggestion fromthe set of suggestions based upon the ranking, the first and secondsuggestions being different suggestion types; and sending the first andsecond suggestion to the first device for presentation to the firstuser.

In Example 2, the subject matter of Example 1 optionally includeswherein the operations of generating the set of personalized suggestionscomprises generating a suggestion in the set of personalized suggestionsbased upon a preference in the user profile corresponding to thesuggestion.

In Example 3, the subject matter of any one or more of. Examples 1-2optionally include wherein the first suggestion is an action suggestionand wherein the operations further comprise: receiving a confirmationinput from the first device that the first user has selected a GraphicalUser Interface (GUI) element on the first device indicating a desire toperform an action corresponding to the action suggestion; and responsiveto receiving the confirmation input, sending a message to a computingdevice to implement the action.

In Example 4, the subject matter of Example 3 optionally includeswherein the action suggestion is a reminder for a particular time andwherein the computing device is a reminder service and the message setsa reminder for the particular time.

In Example 5, the subject matter of any one or more of. Examples 3-4optionally include wherein the action suggestion is a calendar event.

In Example 6, the subject matter of any one or more of Examples 3-5optionally include wherein the action suggestion is a presentation of adocument mentioned in the text of the communication.

In Example 7, the subject matter of any one or more of Examples 1-6optionally include wherein the first suggestion is a content suggestionand wherein the operations further comprise: receiving a confirmationinput from the first device that the first user has selected a GraphicalUser Interface (GUI) element on the first device indicating a desire toreceive content suggested by the content suggestion; and responsive toreceiving the confirmation input, sending the content to the firstdevice.

In Example 8, the subject matter of any one or more of Examples 1-7optionally include wherein the first suggestion is a reply suggestionand wherein the operations further comprise: receiving a confirmationinput from the first device that the first user has selected a GraphicalUser Interface (GUI) element on the first device indicating a desire toreceive content suggested by the first suggestion; and responsive toreceiving the confirmation input, sending a reply text corresponding tothe reply suggestion to a communications service hosting thenetwork-based communication.

In Example 9, the subject matter of Example 8 optionally includeswherein the communications service is a network-based chat service.

In Example 10, the subject matter of any one or more of Examples 1-9optionally include wherein the operations further comprise: receiving aconfirmation input from the first device that the first user hasselected a Graphical User Interface (GUI) element on the first deviceindicating a desire to interact with the first suggestion; andresponsive to receiving the confirmation input, causing a secondary GUIdisplay to open in the first device and presenting options for the firstuser to select.

In Example 11, the subject matter of any one or more of Examples 1-10optionally include wherein a model of the plurality of intent models isa machine learning model.

In Example 12, the subject matter of Example 11 optionally includeswherein the model is updated based upon user interactions with the firstand second suggestion.

In Example 13, the subject matter of any one or more of Examples 1-12optionally include wherein generating the set of suggestions comprises:determining, for a particular response in the set of one or moreresponses, a suggestion based upon a predetermined suggestion for a typeof the particular response.

In Example 14, the subject matter of any one or more of Examples 1-13optionally include wherein the operations further comprise: populatingthe first suggestion with content based upon the user profile of thefirst user and information determined from a network-based servicecorresponding to the first suggestion.

In Example 15, the subject matter of any one or more of Examples 1-14optionally include wherein the operations for ranking the set ofsuggestions relative to one another comprises: utilizing a set ofheuristics, the set of heuristics applying a priority based orderingbased upon type of suggestions.

In Example 16, the subject matter of Example 15 optionally includeswherein the operations for ranking the set of suggestions relative toone another comprises: modifying a ranking produced by the set ofheuristics based upon histories of interaction between a plurality ofusers and a plurality of suggestion types, the plurality of usersincluding the first user and the second user and at least one thirduser, the third user not part of the network-based communication betweenthe first and second user.

In Example 17, the subject matter of Example 16 optionally includeswherein the operations for ranking the set of suggestions relative toone another comprises: modifying a ranking produced by the set ofheuristics based upon both the interaction history• with the pluralityof users and interaction history• with the first user, the interactionhistory recording interactions with previous suggestions.

In Example 18, the subject matter of any one or more of Examples 1-17optionally include wherein the operations of selecting the first andsecond suggestions from the set of suggestions comprises selecting thefirst and second suggestions from the set of suggestions based upon amaximization of the ranking of selected suggestions given a constraintthat all selected suggestions fit in a constrained area of a display ofthe first device.

In Example 19, the subject matter of any one or more of Examples 1-18optionally include wherein the operations of selecting the first andsecond suggestions from the set of suggestions comprises selecting twosuggestions of different types from the set of suggestions, the types ofsuggestions comprising: an action suggestion, a reply suggestion, and acontent suggestion.

In Example 20, the subject matter of any one or more of Examples 1-19optionally include wherein the operations comprise sending the firstsuggestion to the first device for presentation to the first user, butnot sending the first suggestion to the second device for presentationto the second user.

In Example 21, the subject matter of any one or more of Examples 1-20optionally include wherein the operations comprise sending the firstsuggestion to the first device for presentation to the first user andsending the first suggestion to the second device for presentation tothe second user.

In Example 22, the subject matter of any one or more of Examples 1-21optionally include wherein the set of suggestions includes a previouslysent suggestion and wherein the operations of ranking the set ofsuggestions relative to one another based upon the global model and theuser model comprises ranking the previously sent suggestion higher toallow the user time to select the suggestion.

In Example 23, the subject matter of Example 22 optionally includeswherein the operations comprise removing the previously sent suggestionafter a particular period of time.

In Example 24, the subject matter of any one or more of Examples 1-23optionally include wherein communicative intent comprises an intent toone of: go to a restaurant, get directions, set a calendar reminder, goto a movie, call a car service, call a taxi, share an address, determinedetails about an entity, and add a contact.

Example 25 is a computer-implemented method for providing personalizedsuggestions, the method comprising: using a computer processor:receiving, over a network, text of a network-based communication betweena first user of a first device and a second user of a second device;inputting the text of the communication to a plurality of intent models,each intent model testing the text for a different type of communicativeintent; receiving a set of one or more responses from one or more of theplurality of intent models, each response in the set indicating acalculated communicative intent of the communication; generating a setof suggestions based upon both the set of responses and a user profileof the first user; ranking the set of suggestions relative to oneanother based upon a global model and a user model, the user modelspecific to the first user of the first device; selecting a first and asecond suggestion from the set of suggestions based upon the ranking,the first and second suggestions being different suggestion types; andsending the first and second suggestion to the first device forpresentation to the first user.

In Example 26, the subject matter of Example 25 optionally includeswherein generating the set of personalized suggestions comprisesgenerating a suggestion in the set of personalized suggestions basedupon a preference in the user profile corresponding to the suggestion.

In Example 27, the subject matter of any one or more of Examples 25-26optionally include wherein the first suggestion is an action suggestionand wherein the method further comprises: receiving a confirmation inputfrom the first device that the first user has selected a Graphical UserInterface (GUI) element on the first device indicating a desire toperform an action corresponding to the action suggestion; and responsiveto receiving the confirmation input, sending a message to a computingdevice to implement the action.

In Example 28, the subject matter of Example 27 optionally includeswherein the action suggestion is a reminder for a particular time andwherein the computing device is a reminder service and the message setsa reminder for the particular time.

In Example 29, the subject matter of any one or more of Examples 27-28optionally include wherein the action suggestion is a calendar event.

In Example 30, the subject matter of any one or more of Examples 27-29optionally include wherein the action suggestion is a presentation of adocument mentioned in the text of the communication.

In Example 31, the subject matter of any one or more of Examples 25-30optionally include wherein the first suggestion is a content suggestionand wherein the method further comprises: receiving a confirmation inputfrom the first device that the first user has selected a Graphical UserInterface (GUI) element on the first device indicating a desire toreceive content suggested by the content suggestion; and responsive toreceiving the confirmation input, sending the content to the firstdevice.

In Example 32, the subject matter of any one or more of Examples 25-31optionally include wherein the first suggestion is a reply suggestionand wherein the method further comprises: receiving a confirmation inputfrom the first device that the first user has selected a Graphical UserInterface (GUI) element on the first device indicating a desire toreceive content suggested by the first suggestion; and responsive toreceiving the confirmation input, sending a reply text corresponding tothe reply suggestion to a communications service hosting thenetwork-based communication.

In Example 33, the subject matter of Example 32 optionally includeswherein the communications service is a network-based chat service.

In Example 34, the subject matter of any one or more of Examples 25-33optionally include wherein the method further comprises: receiving aconfirmation input from the first device that the first user hasselected a Graphical User Interface (GUI) element on the first deviceindicating a desire to interact with the first suggestion; andresponsive to receiving the confirmation input, causing a secondary GUIdisplay to open in the first device and presenting options for the firstuser to select.

In Example 35, the subject matter of any one or more of Examples 25-34optionally include wherein a model of the plurality of intent models isa machine learning model.

In Example 36, the subject matter of Example 35 optionally includeswherein the model is updated based upon user interactions with the firstand second suggestion.

In Example 37, the subject matter of any one or more of Examples 25-36optionally include wherein generating the set of suggestions comprises:determining, for a particular response in the set of one or moreresponses, a suggestion based upon a predetermined suggestion for a typeof the particular response.

In Example 38, the subject matter of any one or more of Examples 25-37optionally include wherein the method further comprises: populating thefirst suggestion with content based upon the user profile of the firstuser and information determined from a network-based servicecorresponding to the first suggestion.

In Example 39, the subject matter of any one or more of Examples 25-38optionally include wherein ranking the set of suggestions relative toone another comprises: utilizing a set of heuristics, the set ofheuristics applying a priority based ordering based upon type ofsuggestions.

In Example 40, the subject matter of Example 39 optionally includeswherein ranking the set of suggestions relative to one anothercomprises: modifying a ranking produced by the set of heuristics basedupon histories of interaction between a plurality of users and aplurality of suggestion types, the plurality of users including thefirst user and the second user and at least one third user, the thirduser not part of the network-based communication between the first andsecond user.

In Example 41, the subject matter of Example 40 optionally includeswherein ranking the set of suggestions relative to one anothercomprises: modifying a ranking produced by the set of heuristics basedupon both the interaction history with the plurality of users andinteraction history with the first user, the interaction historyrecording interactions with previous suggestions.

In Example 42, the subject matter of any one or more of Examples 25-41optionally include wherein selecting the first and second suggestionsfrom the set of suggestions comprises selecting the first and secondsuggestions from the set of suggestions based upon a maximization of theranking of selected suggestions given a constraint that all selectedsuggestions fit in a constrained area of a display of the first device.

In Example 43, the subject matter of any one or more of Examples 25-42optionally include wherein selecting the first and second suggestionsfrom the set of suggestions comprises selecting two suggestions ofdifferent types from the set of suggestions, the types of suggestionscomprising: an action suggestion, a reply suggestion, and a contentsuggestion.

In Example 44, the subject matter of any one or more of Examples 25-43optionally include wherein the method comprises sending the firstsuggestion to the first device for presentation to the first user, butnot sending the first suggestion to the second device for presentationto the second user.

In Example 45, the subject matter of any one or more of Examples 25-44optionally include wherein the method comprises sending the firstsuggestion to the first device for presentation to the first user andsending the first suggestion to the second device for presentation tothe second user.

In Example 46, the subject matter of any one or more of Examples 25-45optionally include wherein the set of suggestions includes a previouslysent suggestion and wherein ranking the set of suggestions relative toone another based upon the global model and the user model comprisesranking the previously sent suggestion higher to allow the user time toselect the suggestion.

In Example 47, the subject matter of Example 46 optionally includeswherein the method comprises removing the previously sent suggestionafter a particular period of time.

In Example 48, the subject matter of any one or more of Examples 25-47optionally include wherein communicative intent comprises an intent toone of: go to a restaurant, get directions, set a calendar reminder, goto a movie, call a car service, call a taxi, share an address, determinedetails about an entity, and add a contact.

Example 49 is a system that for providing personalized suggestions, thesystem comprising: a processor; a memory, communicatively coupled to theprocessor and including instructions, which when performed by theprocessor, causes the machine to perform operations comprising:receiving, over a network, text of a network-based communication betweena first user of a first device and a second user of a second device;inputting the text of the communication to a plurality of intent models,each intent model testing the text for a different type of communicativeintent; receiving a set of one or more responses from one or more of theplurality of intent models, each response in the set indicating acalculated communicative intent of the communication; generating a setof suggestions based upon both the set of responses and a user profileof the first user; ranking the set of suggestions relative to oneanother based upon a global model and a user model, the user modelspecific to the first user of the first device; selecting a first and asecond suggestion from the set of suggestions based upon the ranking,the first and second suggestions being different suggestion types; andsending the first and second suggestion to the first device forpresentation to the first user.

In Example 50, the subject matter of Example 49 optionally includeswherein the operations of generating the set of personalized suggestionscomprises generating a suggestion in the set of personalized suggestionsbased upon a preference in the user profile corresponding to thesuggestion.

In Example 51, the subject matter of any one or more of Examples 49-50optionally include wherein the first suggestion is an action suggestionand wherein the operations further comprise: receiving a confirmationinput from the first device that the first user has selected a GraphicalUser Interface (GUI) element on the first device indicating a desire toperform an action corresponding to the action suggestion; and responsiveto receiving the confirmation input, sending a message to a computingdevice to implement the action.

In Example 52, the subject matter of Example 51 optionally includeswherein the action suggestion is a reminder for a particular time andwherein the computing device is a reminder service and the message setsa reminder for the particular time.

In Example 53, the subject matter of any one or more of Examples 51-52optionally include wherein the action suggestion is a calendar event.

In Example 54, the subject matter of any one or more of Examples 51-53optionally include wherein the action suggestion is a presentation of adocument mentioned in the text of the communication.

In Example 55, the subject matter of any one or more of Examples 49-54optionally include wherein the first suggestion is a content suggestionand wherein the operations further comprise: receiving a confirmationinput from the first device that the first user has selected a GraphicalUser Interface (GUI) element on the first device indicating a desire toreceive content suggested by the content suggestion; and responsive toreceiving the confirmation input, sending the content to the firstdevice.

In Example 56, the subject matter of any one or more of Examples 49-55optionally include wherein the first suggestion is a reply suggestionand wherein the operations further comprise: receiving a confirmationinput from the first device that the first user has selected a GraphicalUser Interface (GUI) element on the first device indicating a desire toreceive content suggested by the first suggestion; and responsive toreceiving the confirmation input, sending a reply text corresponding tothe reply suggestion to a communications service hosting thenetwork-based communication.

In Example 57, the subject matter of Example 56 optionally includeswherein the communications service is a network-based chat service.

In Example 58, the subject matter of any one or more of Examples 49-57optionally include wherein the operations further comprise: receiving aconfirmation input from the first device that the first user hasselected a Graphical User Interface (GUI) element on the first deviceindicating a desire to interact with the first suggestion; andresponsive to receiving the confirmation input, causing a secondary GUIdisplay to open in the first device and presenting options for the firstuser to select.

In Example 59, the subject matter of any one or more of Examples 49-58optionally include wherein a model of the plurality of intent models isa machine learning model.

In Example 60, the subject matter of Example 59 optionally includeswherein the model is updated based upon user interactions with the firstand second suggestion.

In Example 61, the subject matter of any one or more of Examples 49-60optionally include wherein generating the set of suggestions comprises:determining, for a particular response in the set of one or moreresponses, a suggestion based upon a predetermined suggestion for a typeof the particular response.

In Example 62, the subject matter of any one or more of Examples 49-61optionally include wherein the operations further comprise: populatingthe first suggestion with content based upon the user profile of thefirst user and information determined from a network-based servicecorresponding to the first suggestion.

In Example 63, the subject matter of any one or more of Examples 49-62optionally include wherein the operations for ranking the set ofsuggestions relative to one another comprises: utilizing a set ofheuristics, the set of heuristics applying a priority based orderingbased upon type of suggestions.

In Example 64, the subject matter of Example 63 optionally includeswherein the operations for ranking the set of suggestions relative toone another comprises: modifying a ranking produced by the set ofheuristics based upon histories of interaction between a plurality ofusers and a plurality of suggestion types, the plurality of usersincluding the first user and the second user and at least one thirduser, the third user not part of the network-based communication betweenthe first and second user.

In Example 65, the subject matter of Example 64 optionally includeswherein the operations for ranking the set of suggestions relative toone another comprises: modifying a ranking produced by the set ofheuristics based upon both the interaction history with the plurality ofusers and interaction history with the first user, the interactionhistory• recording interactions with previous suggestions.

In Example 66, the subject matter of any one or more of Examples 49-65optionally include wherein the operations of selecting the first andsecond suggestions from the set of suggestions comprises selecting thefirst and second suggestions from the set of suggestions based upon amaximization of the ranking of selected suggestions given a constraintthat all selected suggestions fit in a constrained area of a display ofthe first device.

In Example 67, the subject matter of any one or more of Examples 49-66optionally include wherein the operations of selecting the first andsecond suggestions from the set of suggestions comprises selecting twosuggestions of different types from the set of suggestions, the types ofsuggestions comprising: an action suggestion, a reply suggestion, and acontent suggestion.

In Example 68, the subject matter of any one or more of Examples 49-67optionally include wherein the operations comprise sending the firstsuggestion to the first device for presentation to the first user, butnot sending the first suggestion to the second device for presentationto the second user.

In Example 69, the subject matter of any one or more of Examples 49-68optionally include wherein the operations comprise sending the firstsuggestion to the first device for presentation to the first user andsending the first suggestion to the second device for presentation tothe second user.

In Example 70, the subject matter of any one or more of Examples 49-69optionally include wherein the set of suggestions includes a previouslysent suggestion and wherein the operations of ranking the set ofsuggestions relative to one another based upon the global model and theuser model comprises ranking the previously sent suggestion higher toallow the user time to select the suggestion.

In Example 71, the subject matter of Example 70 optionally includeswherein the operations comprise removing the previously sent suggestionafter a particular period of time.

In Example 72, the subject matter of any one or more of Examples 49-71optionally include wherein communicative intent comprises an intent toone of: go to a restaurant, get directions, set a calendar reminder, goto a movie, call a car service, call a taxi, share an address, determinedetails about an entity, and add a contact.

What is claimed is:
 1. A machine-readable medium that storesinstructions which when performed by a machine, cause the machine toperform operations comprising: receiving, over a network, text of anetwork-based communication between a first device and a second device;inputting the text of the communication to an intent model that istrained to detect a unique type of communicative intent in communicationtexts, wherein the communicative intent is a semantic meaning of thetext of the communication that supports identifying suggestionsassociated with the following suggestion types: an action suggestiontype, a content suggestion type, and a reply suggestion type; receivinga set of one or more responses from the intent model, each response inthe set indicating a calculated communicative intent of thecommunication; generating a set of personalized suggestions based uponboth the set of responses; ranking the set of suggestions relative toone another; selecting a first suggestion and a second suggestion fromthe set of suggestions based upon the ranking, wherein the firstsuggestion is a first suggestion type and the second suggestion is asecond suggestion type, the first suggestion type and the secondsuggestion type being different suggestion types; and sending the firstsuggestion and second suggestion to the first device for presentation.2. The machine-readable medium of claim 1, wherein the first suggestionis an action suggestion of the action suggestion type and wherein theoperations further comprise: receiving a confirmation input from thefirst device, the confirmation input indicates a desire to perform anaction corresponding to the action suggestion; and responsive toreceiving the confirmation input, sending a message to a computingdevice to implement the action.
 3. The machine-readable medium of claim1, wherein the first suggestion is a content suggestion of the contentsuggestion type and wherein the operations further comprise: receiving aconfirmation input from the first device, the confirmation inputindicates a desire to receive content suggested by the contentsuggestion; and responsive to receiving the confirmation input, sendingthe content to the first device.
 4. The machine-readable medium of claim1, wherein the first suggestion is a reply suggestion of the replysuggestion type and wherein the operations further comprise: receiving aconfirmation input from the first device, the confirmation inputindicates a desire to send content suggested by the first suggestion;and responsive to receiving the confirmation input, sending a reply textcorresponding to the reply suggestion to a communications servicehosting the network-based communication.
 5. The machine-readable mediumof claim 1, wherein the operations further comprise populating the firstsuggestion with content based upon a user profile of a first userassociated with the first device and information determined from anetwork-based service corresponding to the first suggestion.
 6. Themachine-readable medium of claim 1, wherein the operations for rankingthe set of suggestions relative to one another comprises utilizing a setof heuristics, the set of heuristics applying a priority based orderingbased upon type of suggestions including the action suggestion type, thecontent suggestion type, and the reply suggestion type.
 7. Themachine-readable medium of claim 1, wherein the operations for rankingthe set of suggestions relative to one another is based upon a usermodel and a global model, the user model is specific to preferences of afirst user of the first device and customized based upon past selectionhistory of suggestions of the first user, the global model is based uponpast selection history of a plurality of users.
 8. Acomputer-implemented method for providing personalized suggestions, themethod comprising: using a computer processor: receiving, over anetwork, text of a network-based communication between a first deviceand a second device; inputting the text of the communication to anintent model that is trained to detect a unique type of communicativeintent in communication texts, wherein the communicative intent is asemantic meaning of the text of the communication that supportsidentifying suggestions associated with the following suggestion types:an action suggestion type, a content suggestion type, and a replysuggestion type; receiving a set of one or more responses from theintent model, each response in the set indicating a calculatedcommunicative intent of the communication; generating a set ofpersonalized suggestions based upon both the set of responses; rankingthe set of suggestions relative to one another; selecting a firstsuggestion and a second suggestion from the set of suggestions basedupon the ranking, wherein the first suggestion is a first suggestiontype and the second suggestion is a second suggestion type, the firstsuggestion type and the second suggestion type being differentsuggestion types; and sending the first suggestion and second suggestionto the first device for presentation.
 9. The method of claim 8, whereinthe first suggestion is an action suggestion of the action suggestiontype and wherein the method further comprises: receiving a confirmationinput from the first device, the confirmation input indicates a desireto perform an action corresponding to the action suggestion; andresponsive to receiving the confirmation input, sending a message to acomputing device to implement the action.
 10. The method of claim 8,wherein the first suggestion is a content suggestion of the contentsuggestion type and wherein the operations further comprise: receiving aconfirmation input from the first device, the confirmation inputindicates a desire to receive content suggested by the contentsuggestion; and responsive to receiving the confirmation input, sendingthe content to the first device.
 11. The method of claim 8, wherein thefirst suggestion is a reply suggestion of the reply suggestion type andwherein the operations further comprise: receiving a confirmation inputfrom the first device, the confirmation input indicates a desire to sendcontent suggested by the first suggestion; and responsive to receivingthe confirmation input, sending a reply text corresponding to the replysuggestion to a communications service hosting the network-basedcommunication.
 12. The method of claim 8, wherein the operations forranking the set of suggestions relative to one another comprisesutilizing a set of heuristics, the set of heuristics applying a prioritybased ordering based upon type of suggestions including the actionsuggestion type, the content suggestion type, and the reply suggestiontype.
 13. The method of claim 8, wherein the operations for ranking theset of suggestions relative to one another is based upon a user modeland a global model, the user model is specific to preferences of a firstuser of the first device and customized based upon past selectionhistory of suggestions of the first user, the global model is based uponpast selection history of a plurality of users.
 14. A system, the systemcomprising: a processor; a memory, communicatively coupled to theprocessor and including instructions, which when performed by theprocessor, causes the system to perform operations comprising:receiving, over a network, text of a network-based communication betweena first device and a second device; inputting the text of thecommunication to an intent model that is trained to detect a unique typeof communicative intent in communication texts, wherein thecommunicative intent is a semantic meaning of the text of thecommunication that supports identifying suggestions associated with thefollowing suggestion types: an action suggestion type, a contentsuggestion type, and a reply suggestion type; receiving a set of one ormore responses from the intent model, each response in the setindicating a calculated communicative intent of the communication;generating a set of personalized suggestions based upon both the set ofresponses; ranking the set of suggestions relative to one another;selecting a first suggestion and a second suggestion from the set ofsuggestions based upon the ranking, wherein the first suggestion is afirst suggestion type and the second suggestion is a second suggestiontype, the first suggestion type and the second suggestion type beingdifferent suggestion types; and sending the first suggestion and secondsuggestion to the first device for presentation.
 15. The system of claim14, wherein the first suggestion is an action suggestion of the actionsuggestion type and wherein the operations further comprise: receiving aconfirmation input from the first device, the confirmation inputindicates a desire to perform an action corresponding to the actionsuggestion; and responsive to receiving the confirmation input, sendinga message to a computing device to implement the action.
 16. The systemof claim 15, wherein the first suggestion is a content suggestion of thecontent suggestion type and wherein the operations further comprise:receiving a confirmation input from the first device, the confirmationinput indicates a desire to receive content suggested by the contentsuggestion; and responsive to receiving the confirmation input, sendingthe content to the first device.
 17. The system of claim 14, wherein thefirst suggestion is a reply suggestion of the reply suggestion type andwherein the operations further comprise: receiving a confirmation inputfrom the first device, the confirmation input indicates a desire to sendcontent suggested by the first suggestion; and responsive to receivingthe confirmation input, sending a reply text corresponding to the replysuggestion to a communications service hosting the network-basedcommunication.
 18. The system of claim 14, wherein the operationsfurther comprise: populating the first suggestion with content basedupon a user profile of a first user associated with the first device andinformation determined from a network-based service corresponding to thefirst suggestion.
 19. The system of claim 14, wherein the operations forranking the set of suggestions relative to one another comprisesutilizing a set of heuristics, the set of heuristics applying a prioritybased ordering based upon type of suggestions including the actionsuggestion type, the content suggestion type, and the reply suggestiontype.
 20. The system of claim 14, wherein the operations for ranking theset of suggestions relative to one another is based upon a user modeland a global model, the user model is specific to preferences of a firstuser of the first device and customized based upon past selectionhistory of suggestions of the first user, the global model is based uponpast selection history of a plurality of users.